package com.aoorey.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

/**
 * 日期与时间戳按指定时区的相互转化
 * 
 * @author lixin
 * @version 2016年11月10日 上午10:19:09
 * 
 */
public class UTCTimeUtil {

	/**
	 * 时间戳转换成指定时区日期格式字符串
	 * 
	 * @param timeStamp
	 *            精确到毫秒的时间戳
	 * @param format
	 *            转换模式 如：yyyy-MM-dd HH:mm:ss
	 * @param timeZone
	 *            指定的时区字符串 如：America/Los_Angeles
	 * @return 转换后的时间字符串
	 */
	public static String timeStamp2Date(Long timeStamp, String format,
			String timeZone) {
		if (timeStamp == null) {
			return "";
		}
		if (format == null || format.isEmpty())
			format = "yyyy-MM-dd HH:mm:ss";
		SimpleDateFormat sdf = new SimpleDateFormat(format);

		// 设置时区,如果为空设置为北京时间
		if (timeZone == null || timeZone.isEmpty())
			timeZone = "Asia/Shanghai";

		TimeZone tz = TimeZone.getTimeZone(timeZone);
		sdf.setTimeZone(tz);

		Date date = new Date(timeStamp.longValue());
		String dateStr = sdf.format(date);
		return dateStr;
	}

	/**
	 * 日期格式字符串转换成时间戳
	 * 
	 * @param dateStr
	 *            字符串日期
	 * @param format
	 *            转换模式 如：yyyy-MM-dd
	 * @return
	 */
	public static Long date2TimeStamp(String dateStr, String format) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(format);

			Long timeStamp = sdf.parse(dateStr).getTime();

			return timeStamp;

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 时间戳转换成日期格式字符串,不加时区
	 * 
	 * @param timeStamp
	 *            精确到毫秒的时间戳
	 * @param format
	 *            转换模式 如：yyyy-MM-dd HH:mm:ss
	 * @return 转换后的时间字符串
	 */
	public static String timeStamp2SimpleDate(Long timeStamp, String format) {
		if (timeStamp == null) {
			return "";
		}
		if (format == null || format.isEmpty())
			format = "yyyy-MM-dd HH:mm:ss";
		SimpleDateFormat sdf = new SimpleDateFormat(format);

		Date date = new Date(timeStamp.longValue());
		String dateStr = sdf.format(date);
		return dateStr;
	}
	
//	public static void main(String[] args) {
//		Long long1 = date2TimeStamp("2016-02-12", "yyyy-MM-dd");
//		System.out.println(long1);
//	}

}
